package com.zenithmind.common.utils;

/**
 * 密码验证服务接口
 * 遵循依赖倒置原则：依赖抽象而非具体实现
 * 遵循接口隔离原则：只包含密码验证相关的操作
 */
public interface PasswordValidationService {
    
    /**
     * 验证密码强度
     * 
     * @param password 密码
     * @return 验证结果
     */
    PasswordValidationResult validatePassword(String password);
    
    /**
     * 检查密码是否符合最低要求
     * 
     * @param password 密码
     * @return 是否符合要求
     */
    boolean isPasswordValid(String password);
    
    /**
     * 获取密码强度等级
     * 
     * @param password 密码
     * @return 强度等级（1-5）
     */
    int getPasswordStrength(String password);
    
    /**
     * 生成密码建议
     * 
     * @param password 密码
     * @return 改进建议列表
     */
    java.util.List<String> getPasswordSuggestions(String password);
    
    /**
     * 密码验证结果
     */
    class PasswordValidationResult {
        private boolean valid;
        private int strength;
        private java.util.List<String> errors;
        private java.util.List<String> suggestions;
        
        public PasswordValidationResult(boolean valid, int strength, 
                                      java.util.List<String> errors, 
                                      java.util.List<String> suggestions) {
            this.valid = valid;
            this.strength = strength;
            this.errors = errors;
            this.suggestions = suggestions;
        }
        
        public boolean isValid() {
            return valid;
        }
        
        public int getStrength() {
            return strength;
        }
        
        public java.util.List<String> getErrors() {
            return errors;
        }
        
        public java.util.List<String> getSuggestions() {
            return suggestions;
        }
    }
}
